<?php
	@header("Content-type:text/html; charset=utf-8"); // @表示忽略此行可能出现的错误或警告；编辑器的编码格式也必须设置为utf-8
    $userlist = file("userlist.ini") or die("Unable to open username config!"); // 返回文件分行内容数组，这里即用户名
	@$name = $_POST["name"];
	if(!empty($name)) {
	    $usercount = count($userlist); // 返回文件行数，这里即用户数
		for($i=0; $i<$usercount; $i++) {
		    $userlist[$i] = rtrim($userlist[$i]); // 删除末尾的特殊字符
			if($userlist[$i] == $name) {
				setcookie("selectedIndex", $i, time()+60*60*24*30); // 每次订餐后用户名设为30天有效期
				break;
			}
		}
	} 
?>

<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <!编辑器的编码格式也必须设置为utf-8>
</head>
</body>
<div align="center">

<?php
    $filename = "destmenu.ini";
	@$date = date("Y-m-d");
	@$name = $_POST["name"];
    @$bill = $_POST["bill"];
	@$menu = $_POST["menu"];
	touch($filename); // 确保配置文件存在(有则改变访问时间，无则创建)
	$filecontents = file_get_contents($filename); // 读取整个配置文件到字符串缓冲区
	// 如果配置文件新建或过期（不是今天创建或更新的），那么使之包含且只包含时间戳Section
	if(!stristr($filecontents, $date)) {
		@$timestamp = "[timestamp]\r\n" . date("l") . " = " . $date . "\r\n"; // @为date("l")而设置
		file_put_contents($filename, $timestamp);
	}
		
	if(!empty($name)) {
		// 缓冲配置文件
		$filecontentsarray = file($filename); // 返回分行数组
		// 打开配置文件
		$file = fopen($filename, "w") or die("Unable to open file!"); // 有则清空无则创建（在此应为清空）
		// 回写缓冲数据，旨在删除上次订餐
		for($i=0; $i<count($filecontentsarray); $i++) {
			if(!stristr($filecontentsarray[$i], $name)) {
				fwrite($file, $filecontentsarray[$i]); 
			}
		}
		
		// 写入本次订餐
		if($bill > 0) {
			$sectionname = "[" . $name . "  " . ($bill+2) . "元]\r\n";
			fputs($file, $sectionname);
			for($j=0; $j<count($menu); $j++) {
				$keyandvalue = $name . $j . " = " . $menu[$j] . "\r\n";		
				fputs($file, $keyandvalue);
			}
		}
		
		// 经过上述两个步骤，本次订餐数据，上次订餐数据交叉处理共有4种情况。。。
		fclose($file);
	}

	// 显示今日全部订餐结果，注意，ini文件的开始是时间戳Section
/* 	$arrays = parse_ini_file($filename, true); // true返回二维数组(false返回一维数组, 对于二维的ini配置格式，使用true比较高效实用)
	$tatolmenus = count($arrays); // 包括时间戳Section
	if($tatolmenus < 2) {  // 1 == $tatolmenus, 不计时间戳Section
	    echo "暂时还没有人定餐!";
	} else {
	    echo "<b>翠竹亭订餐电话：26625820</b><br /><br />";
	    echo "目前共有" . ($tatolmenus-1) . "人订餐：<br /><br />"; // 不计时间戳Section
		echo "<table border='1'><tr>";	
		foreach($arrays as $key1=>$value1) {
			if(0 == strcasecmp($key1, "timestamp")) {
				continue; // 等同于下行else，跳过时间戳Section
			}
			
			echo "<td valign='top'><table>";
			echo "<div align='center'>" . $key1 . "</div><hr />";
			foreach($value1 as $key2=>$value2) {
				echo "<tr><td>" . $value2 . "</td></tr>";
			}
			
			echo "</table></d>";
		}
		
		echo "<tr></table>";
	}
	
	echo "<br />注：总价包含米饭2元<br /><br />"; 
	echo "<a href='index.htm'><b>返回订餐</b></a>"; */
    // 配置文件仍是ini格式，只因兼容问题改为分行读取
	$arr = file($filename); // 分行数组
	$totallines = count($arr); // 行数
	$tatolmenus = 0; // 订餐份数
	for($i=2; $i<$totallines; $i++) { // 订餐计数，跳过前两行的时间戳Section
		if(stristr($arr[$i], "[")) {
			$tatolmenus++;
		}
	}	
	
	if($tatolmenus < 1) { // (0 == $tatolmenus)
	    echo "暂时还没有人定餐!<br />";
	} else { 
	    echo "<b>翠竹亭订餐电话：26625820</b><br /><br />";
	    echo "目前共有" . $tatolmenus . "人订餐(本公司地址)：<br /><br />";
		echo "<table border='1'><tr>";	
		for($j=2; $j<$totallines; $j++) { // 订餐列表，跳过前两行的时间戳Section
		    if(stristr($arr[$j], "[")) {
			    if($j > 3) {
					echo "</table></d>";
				}
				
				$menutitle = strtr($arr[$j], "[]", "  ");
				trim($menutitle);
				echo "<td valign='top'><table>";
				echo "<div align='center'>" . $menutitle . "</div><hr />";
				continue; // 等同于下行else
			}
			
			$charindex = stripos($arr[$j], "=");
			$menuitem = substr($arr[$j], $charindex+1);
			trim($menuitem);
			echo "<tr><td>" . $menuitem . "</td></tr>";
		}
		
		echo "</table></d>";
		echo "<tr></table>";
		echo "<br />注：订餐金额默认包含米饭2元<br />";
	}
	
	echo "<br /><a href='srcmenu.php'><b>返回订餐</b></a>";
?>

</div>
</body>
</html>